Skip to main content

Puntatore: SUPER

Il SUPER pointer è una variabile speciale che viene utilizzata per la programmazione orientata agli oggetti.

SUPER è il puntatore di un blocco funzione all'istanza del blocco funzione di base da cui è stato generato il blocco funzione. Il SUPER pointer consente inoltre di accedere all'implementazione dei metodi del blocco funzione di base (classe base). UN SUPER il puntatore è automaticamente disponibile per ogni blocco funzione. Puoi usare SUPER solo nei metodi e nelle implementazioni dei blocchi funzione associati.

Dereferenziazione del puntatore: SUPER^

Usando il SUPER puntatore: Con il SUPER parola chiave, si chiama un metodo valido nell'istanza della classe base o della classe genitore.

Esempio 98. Esempio

ST

SUPER^.METH_DoIt();

FBD/CFC/LD

_cds_img_pointer_super_fbd.png


Esempio 99. Esempio

Uso di SUPER e THIS puntatori

FUNCTION_BLOCK FB_Base
VAR_OUTPUT
        iCnt : INT;
END_VAR

METHOD METH_DoIt : BOOL
iCnt := -1;

METHOD METH_DoAlso : BOOL
METH_DoAlso := TRUE;

FUNCTION_BLOCK FB_1 EXTENDS FB_Base
VAR_OUTPUT
        iBase : INT;
END_VAR

THIS^.METH_DoIt();  //Call of the methods of FB_1
THIS^.METH_DoAlso();

SUPER^.METH_DoIt();   //Call of the methods of FB_Base
SUPER^.METH_DoAlso();
iBase := SUPER^.iCnt;

METHOD METH_DoIt : BOOL
iCnt := 1111;
METH_DoIt := TRUE;

PROGRAM PLC_PRG
VAR
    myBase : FB_Base;
    myFB_1 : FB_1;
    iTHIS : INT;
    iBase : INT;
END_VAR
myBase();
iBase := myBase.iCnt;
myFB_1();
iTHIS := myFB_1.iCnt;


Suggerimento

THIS non è ancora implementato per l'elenco di istruzioni (IL).